package com.catazy.wanandroid.common_base.net.interceptor

import com.catazy.wanandroid.common_base.BaseApplication
import com.catazy.wanandroid.common_base.util.NetWorkUtil
import okhttp3.CacheControl
import okhttp3.Interceptor
import okhttp3.Response

/**
 * 作者: Tao
 * 日期: 2024/4/10
 * 时间: 13:35
 * 描述: 缓存拦截器
 */
class CacheInterceptor:Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        // 请求缓存
        val request = chain.request()
        if (!NetWorkUtil.isNetworkAvailable(BaseApplication.getContext())) {
            request.newBuilder()
                .cacheControl(CacheControl.FORCE_CACHE)
                .build()
        }
        // 回执缓存
        // 有网络时 设置缓存超时时间0个小时 ,意思就是不读取缓存数据,只对get有用,post没有缓冲
        val response = chain.proceed(request)
        if (NetWorkUtil.isNetworkAvailable(BaseApplication.getContext())) {
            val maxAge = 60 * 3
            response.newBuilder()
                .header("Cache-Control", "public, max-age=$maxAge")
                .removeHeader("Retrofit") // 清除头信息，服务器如果不支持，会返回一些干扰信息，不清除无法生效
                .build()
        } else {
            // 无网络时，设置超时为4周， 只对get有用，post没有缓存
            val maxStale = 60 * 60 * 24 * 28
            response.newBuilder()
                .header("Cache-Control", "public, only-if-cached, max-stale=$maxStale")
                .removeHeader("nyn")
                .build()
        }
        return response
    }
}